package SecondeStage.MianXiangDuiXiang.AbstractClass.Final;

public class Final02 {
    public static void main(String[] args) {
        //final类不能被继承，但可以实例化对象
        AA aa =new AA();

        // 如果类不是final类，但含有final方法，则该方法虽然不能被重写，但是可以被继承
        CC cc =new CC();
        Double sum=cc.sum(CC.TAX_RATE,CC.TAX_RATE2);
        System.out.println(sum);

        System.out.println(EE.NUM);
    }
}



class BB{
    // 如果final修饰的属性是静态的，则初始化的位置只能是
    // ① 定义时
    public static final double TAX_RATE = 0.08;

    // ② 在代码块中
    public static final double TAX_RATE2 ;

    static {
        TAX_RATE2 = 1.1;
    }

    public final double sum(Double TAX_RATE,Double TAX_RATE2){
        return TAX_RATE + TAX_RATE2;
    }

}

final class AA{

}

class CC extends BB{

}

class EE{
    // final 和 static 往往搭配使用，效率更高，因为不会导致类加载，底层编译器做了优化处理
    //public  static int NUM=10000;
    public final static int NUM=10000;

    static {
        System.out.println("EE 静态代码块被执行");
    }
}
